Introduction of new functionalities to a software program may be accompanied with changes in data structures. Changes in data structures may break backwards compatibility with existing clients and/or customizations in existing installations. Such data structure changes typically force clients and customizations to align their code, which may result in costly development and testing cycles, often spanning multiple software vendors and system integrators.
One way to mitigate this problem is to expose multiple versions of APIs to be used by clients and customizations. Once a new version of an API is available, clients and customizations can be gradually upgraded to use the new API, and until they do so, they may use the old API. However, versioning of the APIs may incur replication of all or most of the product code implementing those APIs.
However, such code replication is costly and difficult to maintain. Enhancements and bug fixes need to be developed and tested in all versions. Resources that are shared by all code versions, such as database schema, need to support compatibility with all code versions. The cost and complexity further increases with the increase in complexity of the product and introduction of more versions.
There is thus a need for addressing these and/or other issues associated with the prior art.